草庐IT

linux - 删除 bash 脚本中除最新 3 个以外的所有文件

问题:如何删除目录中除最新的3个文件之外的所有文件?查找最新的3个文件很简单:ls-t|head-3但我需要找到除最新的3个文件之外的所有文件。我该怎么做,以及如何在同一行中删除这些文件而不为此创建不必要的for循环?为此,我正在使用DebianWheezy和bash脚本。 最佳答案 这将列出除最新三个之外的所有文件:ls-t|tail-n+4这将删除那些文件:ls-t|tail-n+4|xargsrm--这也将列出点文件:ls-At|tail-n+4并用点文件删除:ls-At|tail-n+4|xargsrm--但要注意:当文件名

linux - 如何获取在 bash 脚本中执行的命令的进程 ID?

我有一个脚本我想同时运行2个程序,一个是c程序,另一个是cpulimit,我想先用“&”在后台启动C程序,然后获取C程序的PIDC程序并将其交给cpulimit,它也将在后台运行,带有“&”。我在下面尝试这样做,它只启动了第一个程序而从未启动cpulimit。此外,我还在archlinux中使用systemd以root身份将其作为启动脚本运行。#!/bin/bash/myprogram&PID=$!cpulimit-z-p$PID-l75&exit0 最佳答案 我想我现在已经解决了这个问题,根据这里:link我需要像这样包装命令(c

linux - 如何禁止在 bash 中编辑我的历史记录

在bash中,当我回到历史记录,编辑一些命令并运行它时,这个编辑过的命令会附加到历史记录中,而原始命令则保持不变。但是每隔一段时间我都会设法影响原始命令,即我的编辑会替换历史上的原始命令。我不知道这是怎么发生的。谁能解释一下?我的目标是避免这种情况,因此对先前命令的任何编辑都会附加到历史记录中,并且永远不会替换原始命令。 最佳答案 Isomehowmanagetoaffecttheoriginalcommand,i.e.myeditreplacestheoriginalcommandbackinhistory.没错。如果您返回历史并

linux - 等到服务在 bash 脚本中启动

我有一个在后台启动某些服务的bash脚本。此服务成功启动后,它会将“服务器处于事件状态”打印到标准输出。我需要等到这个字符串出现,然后继续执行我的脚本。我怎样才能做到这一点? 最佳答案 我会这样做。./server>/tmp/server-log.txt&sleep1while!grep-m1'Serverisactive'此处-m1告诉grep(1)在第一次匹配时退出。我用下面的玩具“服务”验证了我的答案:#!/bin/bashtrap"echo'YOUkilledmewithSIGPIPE!'1>&2"SIGPIPErm-f/t

linux - 在 bash 中排序

我一直试图在bash制表符分隔文件的每一列中获取唯一值。所以,我使用了以下命令。cut-f|sort|uniq-c它工作正常,我可以获得列中的唯一值及其计数105Linux55MacOS500Windows我想做的不是按列值名称(在本例中是操作系统名称)排序,而是按计数对它们进行排序,并且可能在此输出格式的第二列中包含计数。所以它必须看起来像:Windows500MacOS105Linux55我该怎么做? 最佳答案 使用:cut-f|sort|uniq-c|sort-r-k1-n|awk'{print$2""$1}'sort-r-k

linux - 检查 bash 中是否存在服务(CentOS 和 Ubuntu)

在bash中检查服务是否已安装的最佳方法是什么?它应该适用于RedHat(CentOS)和Ubuntu?思考:service="mysqld"if[-f"/etc/init.d/$service"];then#mysqldserviceexistsfi也可以使用service命令并检查返回码。servicemysqldstatusif[$?=0];then#mysqldserviceexistsfi什么是最好的解决方案? 最佳答案 要在不“ping”所有其他服务的情况下获取一项服务的状态,您可以使用以下命令:systemctllis

linux - 将 Linux (CLI) 上的文件上传到 Dropbox(通过 bash/sh)?

我需要通过cron(每小时)将文件保存(并覆盖)到我的保管箱帐户。该文件需要存储在预定义位置(与其他一些用户共享)。我看到了创建一个Dropbox应用程序的可能性,但它创建了自己的dropbox文件夹。还查看了DropboxSaver,但这似乎适用于浏览器。我在想(希望)一些super轻量级​​,一个很长的CURL行,所以我不需要安装库。只要一个简单的sh脚本就很棒了。我只需要PUT文件(覆盖),不需要读取(GET)它回来。正在通过保管箱developerAPIdocumentation,但有点迷路了。有什么好的提示吗? 最佳答案

linux - Bash 导出命令

我的64位Ubuntu在export命令上遇到了一个奇怪的问题。基本上,我在我的Windows7系统上的Ubuntu上安装了VM,我正在尝试使用自定义(由客户端提供)软件将命令从我的Windows系统传递到我的VM安装。因此,在我的虚拟机上,当我这样做时:exportfoo=barecho$foo一切都按预期进行。但是,当我通过自定义软件(基本上将Linux命令作为字符串传递给bashshell)执行相同操作时,我得到:export:commandnotfound我尝试查看shell(使用自定义软件),使用:echo$SHELL>shell.txt我得到了/bin/bash,这是预期的

linux - 在 BASH 脚本中使用 'awk' 将列添加到 CSV 文件的末尾

如何使用变量中的字符串将列添加到CSV文件的末尾?输入.csv2012-02-29,01:00:00,Manhattan,NewYork,2342012-02-29,01:00:00,Manhattan,NewYork,8432012-02-29,01:00:00,Manhattan,NewYork,4722012-02-29,01:00:00,Manhattan,NewYork,516输出.csv2012-02-29,01:00:00,Manhattan,NewYork,234,2012-02-2916:13:002012-02-29,01:00:00,Manhattan,NewYo

linux - 使用 sh 运行 bash 脚本

我有bash脚本,它需要bash。另一个人尝试运行它shscript_name.sh它失败了,因为在他的发行版中sh是指向dash的符号链接(symboliclink)。$ls-la/bin/shlrwxrwxrwx1rootroot4Aug2516:06/bin/sh->dash我有一个使用包装脚本的想法:#!/bin/shbashscript_name.sh目标是在具有指向dash的符号链接(symboliclink)的系统中通过sh和bash运行.sh脚本。 最佳答案 嗯,通常你使用shebang告诉shell使用正确的解释器